//package com.sq.imp.MyMenuManagers;
//
//import com.sq.abstractClass.Text;
//import com.sq.imp.audio.AudioPlay;
//import javafx.application.Platform;
//import javafx.scene.media.Media;
//import javafx.scene.media.MediaPlayer;
//import javax.swing.*;
//import java.awt.*;
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
//import java.io.File;
//import java.net.URI;
//
//public class AudioPlayManagers {
//    private Text textArea;
//    private JFrame frame;
//    public JMenu audioPlay = new JMenu("音乐播放");
//    private JFrame playFrame;
//    private JTextField scoreInput;
//    private MediaPlayer mediaPlayer;
//    private AudioPlay audioPlayMain, audioPlayBreak;
//    private File audioFile;
//    private JButton playBtn, pauseBtn, replayBtn, playScoreBtn;
//    private JSlider volumeSlider;
//    private JTextArea scoreTextArea;
//    private int beatDuration = 220; // 默认节拍时长
//
//    public AudioPlayManagers(Text textArea, JFrame frame) {
//        this.textArea = textArea;
//        this.frame = frame;
//
//        // 创建音乐播放相关菜单项
//        JMenuItem openMenuItem = new JMenuItem("打开音乐");
//        JMenuItem playMenuItem = new JMenuItem("播放");
//        JMenuItem pauseMenuItem = new JMenuItem("暂停");
//        JMenuItem replayMenuItem = new JMenuItem("重新播放");
//        JMenuItem playScoreMenuItem = new JMenuItem("播放乐谱");
//
//        // 添加菜单项到菜单
//        audioPlay.add(openMenuItem);
//        audioPlay.add(playMenuItem);
//        audioPlay.add(pauseMenuItem);
//        audioPlay.add(replayMenuItem);
//        audioPlay.add(playScoreMenuItem);
//
//        // 初始化播放窗口
//        initPlayWindow();
//
//        // 添加菜单项事件监听
//        openMenuItem.addActionListener(e -> openAudioFile());
//        playMenuItem.addActionListener(e -> playAudio());
//        pauseMenuItem.addActionListener(e -> pauseAudio());
//        replayMenuItem.addActionListener(e -> replayAudio());
//        playScoreMenuItem.addActionListener(e -> playScore());
//    }
//
//    // 初始化播放窗口
//    private void initPlayWindow() {
//        playFrame = new JFrame("音乐播放");
//        playFrame.setSize(600, 400);
//        playFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
//        playFrame.setLocationRelativeTo(frame);
//
//        // 创建主面板
//        JPanel mainPanel = new JPanel(new BorderLayout());
//
//        // 创建乐谱输入区域
//        JPanel scorePanel = new JPanel(new BorderLayout());
//        scorePanel.setBorder(BorderFactory.createTitledBorder("乐谱输入"));
//
//        scoreTextArea = new JTextArea(10, 40);
//        scoreTextArea.setLineWrap(true);
//        JScrollPane scrollPane = new JScrollPane(scoreTextArea);
//        scorePanel.add(scrollPane, BorderLayout.CENTER);
//
//        // 节拍时长设置
//        JPanel settingPanel = new JPanel();
//        settingPanel.add(new JLabel("节拍时长(毫秒):"));
//        JTextField beatDurationField = new JTextField(String.valueOf(beatDuration), 5);
//        settingPanel.add(beatDurationField);
//        JButton applyBtn = new JButton("应用设置");
//        applyBtn.addActionListener(e -> {
//            try {
//                beatDuration = Integer.parseInt(beatDurationField.getText());
//                JOptionPane.showMessageDialog(playFrame, "节拍时长已设置为 " + beatDuration + " 毫秒");
//            } catch (NumberFormatException ex) {
//                JOptionPane.showMessageDialog(playFrame, "请输入有效的数字", "错误", JOptionPane.ERROR_MESSAGE);
//            }
//        });
//        settingPanel.add(applyBtn);
//        scorePanel.add(settingPanel, BorderLayout.SOUTH);
//
//        mainPanel.add(scorePanel, BorderLayout.NORTH);
//
//        // 创建按钮面板
//        JPanel btnPanel = new JPanel();
//
//        // 播放音频按钮
//        playBtn = new JButton("播放音频");
//        playBtn.addActionListener(e -> playAudio());
//        btnPanel.add(playBtn);
//
//        // 暂停按钮
//        pauseBtn = new JButton("暂停");
//        pauseBtn.addActionListener(e -> pauseAudio());
//        pauseBtn.setEnabled(false);
//        btnPanel.add(pauseBtn);
//
//        // 重新播放按钮
//        replayBtn = new JButton("重新播放");
//        replayBtn.addActionListener(e -> replayAudio());
//        replayBtn.setEnabled(false);
//        btnPanel.add(replayBtn);
//
//        // 播放乐谱按钮
//        playScoreBtn = new JButton("播放乐谱");
//        playScoreBtn.addActionListener(e -> playScore());
//        btnPanel.add(playScoreBtn);
//
//        mainPanel.add(btnPanel, BorderLayout.CENTER);
//
//        // 音量控制滑块
//        JPanel volumePanel = new JPanel();
//        volumePanel.add(new JLabel("音量:"));
//        volumeSlider = new JSlider(0, 100, 70);
//        volumeSlider.addChangeListener(e -> {
//            if (mediaPlayer != null) {
//                mediaPlayer.setVolume(volumeSlider.getValue() / 100.0);
//            }
//        });
//        volumePanel.add(volumeSlider);
//        mainPanel.add(volumePanel, BorderLayout.SOUTH);
//
//        playFrame.add(mainPanel);
//    }
//
//    // 打开音频文件
//    private void openAudioFile() {
//        JFileChooser fileChooser = new JFileChooser();
//        fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
//            @Override
//            public boolean accept(File f) {
//                return f.isDirectory() ||
//                        f.getName().toLowerCase().endsWith(".mp3") ||
//                        f.getName().toLowerCase().endsWith(".wav") ||
//                        f.getName().toLowerCase().endsWith(".aac") ||
//                        f.getName().toLowerCase().endsWith(".m4a");
//            }
//            @Override
//            public String getDescription() {
//                return "音频文件 (*.mp3, *.wav, *.aac, *.m4a)";
//            }
//        });
//
//        int result = fileChooser.showOpenDialog(frame);
//        if (result == JFileChooser.APPROVE_OPTION) {
//            audioFile = fileChooser.getSelectedFile();
//
//            // 关闭当前正在播放的音频
//            if (mediaPlayer != null) {
//                mediaPlayer.stop();
//                mediaPlayer.dispose();
//            }
//
//            // 停止当前播放的乐谱
//            stopScore();
//
//            // 在JavaFX线程中创建MediaPlayer
//            Platform.runLater(() -> {
//                try {
//                    URI uri = audioFile.toURI();
//                    Media media = new Media(uri.toString());
//                    mediaPlayer = new MediaPlayer(media);
//
//                    // 设置音量
//                    mediaPlayer.setVolume(volumeSlider.getValue() / 100.0);
//
//                    // 监听播放状态变化
//                    mediaPlayer.statusProperty().addListener((observable, oldValue, newValue) -> {
//                        if (newValue == MediaPlayer.Status.READY) {
//                            SwingUtilities.invokeLater(() -> {
//                                playBtn.setEnabled(true);
//                                pauseBtn.setEnabled(false);
//                                replayBtn.setEnabled(false);
//                                playScoreBtn.setEnabled(true);
//
//                                // 显示播放窗口
//                                playFrame.setVisible(true);
//                            });
//                        } else if (newValue == MediaPlayer.Status.PLAYING) {
//                            SwingUtilities.invokeLater(() -> {
//                                playBtn.setEnabled(false);
//                                pauseBtn.setEnabled(true);
//                                replayBtn.setEnabled(true);
//                                playScoreBtn.setEnabled(false);
//                            });
//                        } else if (newValue == MediaPlayer.Status.PAUSED) {
//                            SwingUtilities.invokeLater(() -> {
//                                playBtn.setEnabled(true);
//                                pauseBtn.setEnabled(false);
//                                replayBtn.setEnabled(true);
//                                playScoreBtn.setEnabled(true);
//                            });
//                        } else if (newValue == MediaPlayer.Status.STOPPED || newValue == MediaPlayer.Status.STALLED) {
//                            SwingUtilities.invokeLater(() -> {
//                                playBtn.setEnabled(true);
//                                pauseBtn.setEnabled(false);
//                                replayBtn.setEnabled(true);
//                                playScoreBtn.setEnabled(true);
//                            });
//                        }
//                    });
//
//                    // 监听错误
//                    mediaPlayer.setOnError(() -> {
//                        SwingUtilities.invokeLater(() -> {
//                            JOptionPane.showMessageDialog(frame, "播放错误: " + media.getError().getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
//                        });
//                    });
//
//                } catch (Exception ex) {
//                    SwingUtilities.invokeLater(() -> {
//                        JOptionPane.showMessageDialog(frame, "无法打开音频文件: " + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
//                    });
//                }
//            });
//        }
//    }
//
//    // 暂时懒得搞
//    // 播放音频
//    private void playAudio() {
////        if (mediaPlayer != null &&
////                (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED ||
////                        mediaPlayer.getStatus() == MediaPlayer.Status.READY ||
////                        mediaPlayer.getStatus() == MediaPlayer.Status.STOPPED ||
////                        mediaPlayer.getStatus() == MediaPlayer.Status.ENDED)) {
////            stopScore(); // 停止乐谱播放
////            mediaPlayer.play();
////        }
//    }
//
//    // 暂停音频
//    private void pauseAudio() {
////        if (mediaPlayer != null && mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {
////            mediaPlayer.pause();
////        }
////
////        if (audioPlayMain != null && audioPlayMain.isPlaying()) {
////            audioPlayMain.pause();
////        }
////
////        if (audioPlayBreak != null && audioPlayBreak.isPlaying()) {
////            audioPlayBreak.pause();
////        }
//    }
//
//    // 重新播放音频
//    private void replayAudio() {
////        if (mediaPlayer != null) {
////            mediaPlayer.seek(mediaPlayer.getStartTime());
////            playAudio();
////        }
////
////        if (audioPlayMain != null) {
////            audioPlayMain.restart();
////        }
////
////        if (audioPlayBreak != null) {
////            audioPlayBreak.restart();
////        }
//    }
//
//    // 播放乐谱
//    private void playScore() {
//        // 停止当前播放的音频
//        if (mediaPlayer != null && mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {
//            mediaPlayer.pause();
//        }
//
//        // 获取乐谱文本
//        String scoreText = scoreTextArea.getText().trim();
//        if (scoreText.isEmpty()) {
//            JOptionPane.showMessageDialog(frame, "请输入乐谱内容", "提示", JOptionPane.INFORMATION_MESSAGE);
//            return;
//        }
//
//        try {
//            // 创建并配置AudioPlay实例
//            audioPlayMain = new AudioPlay(beatDuration).loadNotes(scoreText);
//            audioPlayMain.isPrint = true;
//
//            // 尝试获取第二个乐谱（如果有）
//            String[] scoreParts = scoreText.split("\\r?\\n\\s*\\r?\\n");
//            if (scoreParts.length > 1) {
//                audioPlayBreak = new AudioPlay(beatDuration).loadNotes(scoreParts[1]);
//            } else {
//                // 如果没有第二个乐谱，使用第一个乐谱的副本
//                audioPlayBreak = new AudioPlay(beatDuration).loadNotes(scoreText);
//            }
//
//            // 显示播放窗口
//            playFrame.setVisible(true);
//
//            // 更新按钮状态
//            playBtn.setEnabled(false);
//            pauseBtn.setEnabled(true);
//            replayBtn.setEnabled(true);
//            playScoreBtn.setEnabled(false);
//
//            // 启动播放（在单独线程中）
//            new Thread(() -> {
//                try {
//                    audioPlayMain.start();
//                    if (audioPlayBreak != null) {
//                        audioPlayBreak.start();
//                    }
//
//                    // 播放完成后更新按钮状态
//                    SwingUtilities.invokeLater(() -> {
//                        playBtn.setEnabled(true);
//                        pauseBtn.setEnabled(false);
//                        replayBtn.setEnabled(true);
//                        playScoreBtn.setEnabled(true);
//                    });
//                } catch (Exception e) {
//                    SwingUtilities.invokeLater(() -> {
//                        JOptionPane.showMessageDialog(frame, "播放乐谱出错: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
//                        playBtn.setEnabled(true);
//                        pauseBtn.setEnabled(false);
//                        replayBtn.setEnabled(true);
//                        playScoreBtn.setEnabled(true);
//                    });
//                }
//            }).start();
//
//        } catch (Exception e) {
//            JOptionPane.showMessageDialog(frame, "加载乐谱失败: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
//        }
//    }
//
//    // 停止乐谱播放
//    private void stopScore() {
////        if (audioPlayMain != null && audioPlayMain.isPlaying()) {
////            audioPlayMain.stop();
////        }
////
////        if (audioPlayBreak != null && audioPlayBreak.isPlaying()) {
////            audioPlayBreak.stop();
////        }
//    }
//}